package com.ssy.lingxi.common.constant.basic;

import com.ssy.lingxi.common.language.LanguageHolder;

import java.util.Arrays;

/**
 * 平台规则类型
 * @author 万宁
 * @version 2.0.0
 * @date 2021-08-04
 */
public enum PlatformRuleTypeEnum {
    /**
     * 资金归集模式 - 1
     */
    FUND(1, "资金归集模式"),

    /**
     * 库存扣减策略 - 2
     */
    INVENTORY(2, "库存扣减策略"),

    /**
     * 下单模式 - 3
     */
    ORDER_MODE(3, "下单模式"),

    /**
     * 订单类型 - 4
     */
    ORDER_TYPE(4, "订单类型"),

    /**
     * 结算方式 - 5
     */
    SETTLEMENT(5, "结算方式"),

    /**
     * 品类与属性使用方式 - 6
     */
    PRODUCT_CATEGORY(6,"品类与属性使用方式"),

    /**
     * 采购寻源类型 - 7
     */
    PURCHASE_SOURCE(7, "采购寻源类型"),

    /**
     * 采购合同付款方式 - 8
     */
    PURCHASE_CONTRACT(8, "采购合同付款方式"),

    /**
     * 营销活动类型 - 9
     */
    MARKETING(9, "营销活动类型"),

    /**
     * 结算支付方式 - 10
     */
    SETTLEMENT_TYPE(10, "结算支付方式"),

    /**
     * 账户余额类型 - 11
     */
    BALANCE_TYPE(11, "账户余额类型");

    PlatformRuleTypeEnum(Integer code, String name) {
        this.code = code;
        this.name = name;
    }

    private Integer code;
    private String name;

    public Integer getCode() {
        return code;
    }

    public String getName() {
        return LanguageHolder.getName(this.getDeclaringClass(), this.getCode());
    }

    public static String getNameByCode(Integer code) {
        PlatformRuleTypeEnum ruleType = Arrays.stream(PlatformRuleTypeEnum.values()).filter(e -> e.getCode().equals(code)).findFirst().orElse(null);
        return ruleType == null ? "" : ruleType.getName();
    }
}
